package com.tgu.home_action.service;

import com.tgu.home_action.pojo.*;

import javax.validation.constraints.NotNull;
import java.util.List;

public interface CaseService {
    /**
     * 发布案件
     */
    ResponseData<Object> publishCase(Case newCase, Family family);

    /**
     * 修改案件信息
     */
    ResponseData<Object> updateCase(Case nowCase, Family family);

    /**
     * 取消案件
     */
    ResponseData<Object> endCase(Integer caseId, Short state, Family family);

    /**
     * 查询所有案件
     */
    ResponseData<List<Case>> getCases(Case caseInformation);

    /**
     * 查询案件数量
     */
    ResponseData<Integer> getCaseNumber();

    /**
     * 查询正在进行的案件
     */
    ResponseData<List<Case>> getIngCase(Double longitude, Double latitude, Integer timeDiff, Integer distance, Volunteer volunteer);

    /**
     * 志愿者接受/拒绝案件
     */
    ResponseData<Object> responseCase(VolunteerCase volunteerCase, Volunteer volunteer);

    /**
     * 查询志愿者参与的所有案件
     */
    ResponseData<List<Case>> getVolunteerCases(Integer volunteerId);

    /**
     * 查询志愿者正在参与的案件
     */
    ResponseData<List<Case>> getVolunteerIngCases(Integer volunteerId);

    /**
     * 志愿者查询本人正在参与的案件
     */
    ResponseData<List<Case>> getMyIngCases(Volunteer volunteer);

    /**
     * 获取正在进行但未参与的案件
     */
    ResponseData<List<Case>> getNewCases(Volunteer volunteer);

    /**
     * 获取案件参与的支援者
     */
    ResponseData<List<Volunteer>> getVolunteers(Integer caseId);


    /**
     * 查询家属的所有案件
     */
    ResponseData<List<Case>> getFamilyAllCase(Family family);

    /**
     * 查询家属的正在进行的案件
     */
    ResponseData<List<Case>> getFamilyIngCase(Family family);

    /**
     * 通过id进行模糊搜索
     */
    ResponseData<List<Case>> getCaseByLikeId(String id);
}
